td-agent2をAmazon Linuxで実行する
ども、大瀧です。
Fluentdディストリビューション Treasure Agent(td-agent2)のAmazon Linuxに対応した最初のリリース、2.2.0が昨日公開されました。EC2でのtd-agent2のインストール方法と、td-agent2に同梱されているWebインターフェースのfluentd-uiの様子をご紹介します。
EC2(Amazon Linux)でのセットアップ手順
公式ドキュメントのインストール手順にある、"RHEL/CentOS 5,6,7"と共通です。ダウンロードされるスクリプト内でYumリポジトリファイルのインポートとtd-agentパッケージのインストールが実行されます。Amazon Linuxでは既定でec2-userユーザーでログインするため、ダウンロードしたスクリプトをsudoコマンドで実行するところに注意します。以下のコマンドを実行します。
curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sudo sh
実行例
$ curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sudo sh % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 660 100 660 0 0 964 0 --:--:-- --:--:-- --:--:-- 964 This script requires superuser access to install rpm packages. You will be prompted for your password by sudo. 読み込んだプラグイン:priorities, update-motd, upgrade-helper treasuredata/latest/x86_64 | 2.9 kB 00:00 treasuredata/latest/x86_64/primary_db | 6.3 kB 00:00 aws-cfn-bootstrap.noarch 1.4-7.1.amzn1 amzn-updates :(略) 読み込んだプラグイン:priorities, update-motd, upgrade-helper 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ td-agent.x86_64 0:2.2.0-0 を インストール --> 依存性解決を終了しました。 依存性を解決しました ======================================================================================================================================================================= Package アーキテクチャー バージョン リポジトリー 容量 ======================================================================================================================================================================= インストール中: td-agent x86_64 2.2.0-0 treasuredata 58 M トランザクションの要約 ======================================================================================================================================================================= インストール 1 パッケージ 総ダウンロード容量: 58 M インストール容量: 202 M Downloading packages: td-agent-2.2.0-0.x86_64.rpm | 58 MB 00:01 Running transaction check Running transaction test Transaction test succeeded Running transaction インストール中 : td-agent-2.2.0-0.x86_64 1/1 adding 'td-agent' group... adding 'td-agent' user... Installing default conffile... Configure td-agent to start, when booting up the OS... 検証中 : td-agent-2.2.0-0.x86_64 1/1 インストール: td-agent.x86_64 0:2.2.0-0 完了しました! $ rpm -q td-agent td-agent-2.2.0-0.x86_64 $
簡単にインストールできました!
fluentd-uiによるtd-agent 2の設定
今回は、td-agentの設定をfluend-uiのWeb画面から行ってみます。試しにFluentdのドキュメントにあるApacheアクセスログをAmazon S3に送る構成を試すためにあらかじめ以下の設定を済ませます。
- S3バケットの作成
- S3アップロードの権限を付与したIAMロールの作成と設定
- My IPからTCP 80番(Apache)、9292番(fluentd-ui)を許可するセキュリティグループの作成と設定
Amazon LinuxではApacheをインストールし、起動しておきます。td-agentからアクセスログが参照できるように、パーミッションを調節します。
$ sudo yum install -y httpd :(略) $ sudo service httpd start Starting httpd: [ OK ] $ sudo chgrp -R td-agent /var/log/httpd $ sudo chmod 2750 /var/log/httpd
Webブラウザでアクセスできることを確認しておきます。
以下のコマンドを実行してfluentd-uiを起動します。
$ sudo /opt/td-agent/usr/sbin/td-agent-ui start Puma 2.11.0 starting... * Min threads: 0, max threads: 16 * Environment: production * Listening on tcp://0.0.0.0:9292
ターミナルはそのままにし、Webブラウザでhttp://EC2のパブリックIP:9292/にアクセスするとfluentd-uiのログイン画面が表示されます。以下の初期アカウントでログインします。
- アカウント名 : admin
- パスワード : changeme
ログインすると、セットアップ画面に進みます。[td-agentをセットアップ]ボタンをクリックします。
設定ファイルの入力画面が表示されます。今回は特に変更せずに[作成]ボタンをクリックします。
これでtd-agentの初期設定は完了です。ダッシュボードに画面が遷移します。続いて、ログの入力/出力を設定するために[ソースと出力先の追加]ボタンをクリックします。
Apacheは[入力] - [ファイル]、S3は[出力] - [AWS S3]をそれぞれクリックし、以下の通り設定します。ドキュメントそのままの設定なので、必要に応じてカスタマイズしてください。
入力(Apacheアクセスログ)の設定
ファイル選択画面になるので、リストからhttpd、access_logの順に選択します。
画面右下にファイルのプレビューが出てわかりやすいですね。[次へ]ボタンをクリックします。
続いてファイルフォーマットを選択します。[format]のドロップダウンから「apache2」を選択します。フォーマットに従い色づけされたファイルが表示されます。これもわかりやすいですね。[次へ]をクリックします。
その他の設定画面では、任意のタグ(今回はs3.httpd.access)を入力し[次へ]をクリックします。
画面右下が切り替わり、ここまでの設定を反映したコンフィグが表示されます。[設定する]をクリックして反映します。
出力(S3)の設定
出力先としてS3の設定を行います。メニューの[ソースと出力先の追加]から[出力] - [AWS S3]をクリックし、以下を設定します。
- Match : s3.*.*
- Aws key / Aws sec key : 今回はIAMロールを利用するため、空のまま
- S3 region / S3 bucket : あらかじめ作成したバケットのリージョン名、パケット名を入力
残りの詳細設定はドキュメントの設定からそのまま引っ張ってきました。
[設定する]ボタンをクリックすると設定が更新されます。
td-agentの起動
メニューから[ダッシュボード] - [開始]ボタンをクリックすればtd-agentが起動します。
しばらく待つと、S3バケットにApacheのログファイルが出力されます。
gzip形式で圧縮されているので、展開し中身を見てみます。以下のようにログが記録されていますね!
2015-04-07T05:14:49Z s3.httpd.access {"host":"XX.XX.XX.XX","user":null,"method":"GET","path":"/","code":403,"size":3839,"referer":null,"agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"} 2015-04-07T05:14:50Z s3.httpd.access {"host":"XX.XX.XX.XX","user":null,"method":"GET","path":"/icons/apache_pb2.gif","code":304,"size":null,"referer":"http://52.68.XX.XX/","agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"} 2015-04-07T05:14:51Z s3.httpd.access {"host":"XX.XX.XX.XX","user":null,"method":"GET","path":"/","code":403,"size":3839,"referer":null,"agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"} 2015-04-07T05:14:51Z s3.httpd.access {"host":"XX.XX.XX.XX","user":null,"method":"GET","path":"/icons/apache_pb2.gif","code":304,"size":null,"referer":"http://52.68.XX.XX/","agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"}
まとめ
Amazon Linuxでのtd-agentの導入と、Webインターフェースのfluentd-uiをご紹介しました。Elastic Beanstalkのインスタンスには現時点では対応していない *1ことに注意しつつ、活用していただければと思います。
参考URL
脚注
- Elastic Beanstalkのインスタンスは$releaseverが固定で201409などになっていてlatestではないため、インストールでエラーになる ↩